package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func CheckLogin() gin.HandlerFunc {
	return func(c *gin.Context) {
		var token string
		for k, v := range c.Request.Header {
			if k == "X-Token"{
				token = v[0]
			}
		}

		if token != "ice" {
			c.JSON(http.StatusUnauthorized, gin.H{
				"msg": "未登录！",
			})
			// 使用该方式阻断
			c.Abort()

			// 即使return 也无法阻止后续返回的执行
			return
		}
		// 继续执行 原来的逻辑
		c.Next()

	}
}

func main(){
	router := gin.Default()
	router.Use(CheckLogin())

	router.GET("/", func(c *gin.Context){
		c.JSON(http.StatusOK, gin.H{
			"message": "login middleware test OK!",
		})
	})

	router.Run(":8080")
}